package com.blog.mapper;

import com.blog.bean.domain.Message;
import com.blog.bean.vo.MessageVO;
import com.github.pagehelper.Page;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

/**
 * @author 任浩
 * @version 1.0
 */

@Mapper
@Repository
public interface MessageMapper {

    /**
     * 查询当前用户的私信列表信息。
     * @param userId
     * @return
     */
    Page<MessageVO> query(Integer userId);

    /**
     * 查找和当前用户聊天的数量
     * @param fromId
     * @param toId
     * @return
     */
    Integer queryCount(@Param("id1") Integer fromId, @Param("id2") Integer toId);

    /**
     * 查询当前用户的私信的详细信息。
     * @param fromId
     * @param toId
     * @return
     */
    Page<MessageVO> quryDetail(@Param("fromId") Integer fromId, @Param("toId") Integer toId);

    /**
     * 添加聊天的信息
     * @param message
     */
    void add(Message message);

    /**
     *  查找当前用户未读的私信的消息。
     * @param fromId
     * @param toId
     */
    Integer unreadMsg(@Param("fromId") Integer fromId, @Param("toId") Integer toId);

    /**
     * 修改信息的状态为已读
     * @param message
     */
    void updateMsgStatus(Message message);

    /**
     * 根据系统消息类型，来查询系统消息的最新的消息
     * @param message
     * @return
     */
    MessageVO topicNew(Message message);

    /**
     * 查询系统消息的当前未读的数量。
     * @param message
     * @return
     */
    Integer topicUnreadCount(Message message);

    /**
     * 查询某个主题下的所有的信息
     * @param message
     * @return
     */
    Page<MessageVO> noticeDetailList(Message message);
}
